<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>JavaBeans</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/JavaBeans"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-JavaBeans rootpage-JavaBeans skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span lang="en">JavaBeans</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p class="mw-empty-elt">
</p>
<p><b><span class="lang-en" lang="en">JavaBeans</span></b> est une technologie de <a href="Composant_logiciel" title="Composant logiciel">composants logiciels</a> écrits en langage <a href="Java_(langage)" title="Java (langage)">Java</a>.
</p><p>La spécification JavaBeans de <a href="Oracle_(entreprise)" title="Oracle (entreprise)">Oracle</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> définit les composants de type JavaBeans comme <span class="citation">« des composants logiciels réutilisables manipulables visuellement dans un outil de conception »</span>.
</p><p>Ils sont utilisés pour encapsuler plusieurs objets dans un seul objet : le « bean » (abréviation de <i><span class="lang-en" lang="en">coffee bean</span></i>, soit « grain de café » en français). Le « bean » regroupe alors tous les attributs des objets encapsulés, et peut définir d'autres attributs si besoin. Ainsi, il représente une entité plus globale que les objets encapsulés de manière à répondre à un besoin métier.
</p><p>En dépit de quelques similarités, les JavaBeans ne doivent pas être confondus avec les <a href="Enterprise_JavaBeans" title="Enterprise JavaBeans">Enterprise JavaBeans</a> (EJB), une technologie de composants côté serveur faisant partie de <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Conventions_JavaBeans">Conventions JavaBeans</h2></div>
<p>Un composant JavaBean est une simple <a href="Classe_(informatique)" title="Classe (informatique)">classe</a> Java qui respecte certaines conventions sur le nommage, la construction et le comportement des méthodes. Le respect de ces conventions rend possible l'utilisation, la réutilisation, le remplacement et la connexion de JavaBeans par des outils de développement.
</p><p>Les conventions à respecter sont les suivantes :
</p>
<ul><li>la classe doit être « <a href="S%C3%A9rialisation" title="Sérialisation"><tt>Serializable</tt></a> » pour pouvoir sauvegarder et restaurer l'état d'instances de cette classe ;</li>
<li>la classe doit posséder un <a href="Constructeur_(programmation)" title="Constructeur (programmation)">constructeur</a> sans paramètre (constructeur par défaut) ;</li>
<li>les attributs privés de la classe (<a href="Variable_d'instance" title="Variable d'instance">variables d'instances</a>) doivent être accessibles publiquement via des méthodes accesseurs construit avec <i>get</i> ou <i>set</i> suivi du nom de l'attribut avec la première lettre <a href="Capitale_et_majuscule" title="Capitale et majuscule">capitalisée</a>. Le couple d’accesseurs est appelé <i>Propriété</i> ;</li>
<li>la classe ne doit pas être déclarée <a href="Final_(Java)" title="Final (Java)"><tt>final</tt></a>.</li></ul>
<p>Comme ces recommandations sont largement exprimées en tant que conventions et non pas par implémentation d'<a href="Interface_(informatique)" title="Interface (informatique)">interfaces</a>, les développeurs voient souvent les JavaBeans comme des Plain Old Java Objects (<a href="POJO" class="mw-redirect" title="POJO">POJO</a>) suivant certaines conventions de nommage. Cette vision des choses est trompeuse, car les JavaBeans supportent l'interception d'<a href="Programmation_%C3%A9v%C3%A9nementielle" title="Programmation événementielle">événements</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Exemple_de_JavaBean">Exemple de JavaBean</h2></div>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// PersonBean.java</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">PersonBean</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="n">major</span><span class="p">;</span>
<span class="w"> </span><span class="c1">// Constructeur par défaut (Ne prenant pas d'arguments).</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">PersonBean</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getName</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">name</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setName</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/* Différentes sémantiques pour les booléens. (get vs is)</span>
<span class="cm"> Ici nous optons pour un préfixe is. */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">isMajor</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">major</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setMajor</span><span class="p">(</span><span class="kt">boolean</span><span class="w"> </span><span class="n">major</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">major</span><span class="o">=</span><span class="w"> </span><span class="n">major</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// TestPersonBean.java</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">TestPersonBean</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">PersonBean</span><span class="w"> </span><span class="n">person</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">PersonBean</span><span class="p">();</span>
<span class="w"> </span><span class="n">person</span><span class="p">.</span><span class="na">setName</span><span class="p">(</span><span class="s">"Bob"</span><span class="p">);</span>
<span class="w"> </span><span class="n">person</span><span class="p">.</span><span class="na">setMajor</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Affichage : "Bob [majeur]"</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="n">person</span><span class="p">.</span><span class="na">getName</span><span class="p">());</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">person</span><span class="p">.</span><span class="na">isMajor</span><span class="p">()</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="s">" [majeur]"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s">" [mineur]"</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Adoption">Adoption</h2></div>
<p>Les <a href="Biblioth%C3%A8que_graphique" title="Bibliothèque graphique">bibliothèques graphiques</a> de Java (<a href="Abstract_Window_Toolkit" title="Abstract Window Toolkit">AWT</a>, <a href="Swing_(Java)" title="Swing (Java)">Swing</a> et <a href="Standard_Widget_Toolkit" title="Standard Widget Toolkit">SWT</a>) utilisent les conventions JavaBeans pour leurs composants, ce qui permet aux éditeurs graphiques comme <a href="Eclipse_(logiciel)" class="mw-redirect" title="Eclipse (logiciel)">Eclipse</a> de maintenir une hiérarchie de composants et de fournir un accès à leurs attributs via les accesseurs et mutateurs.
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html">« <span class="lang-en" lang="en">JavaBeans Spec</span> »</a>, oracle.com.</span>
</li>
</ol></div>
</div>
<div class="mw-heading mw-heading2"><h2 id="Articles_connexes">Articles connexes</h2></div>
<ul><li>Les composants côté serveur Entreprise JavaBeans (<a href="EJB" class="mw-redirect" title="EJB">EJB</a>).</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/tutorial/javabeans/index.html">La page officielle de Sun sur les JavaBeans</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/7/docs/technotes/guides/beans/index.html">Les tutoriels de Sun à propos des JavaBeans</a></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2023-12-13" href="https://fr.wikipedia.org/wiki/?title=JavaBeans&oldid=210505339">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>